PHP冒泡排序
<?php// 冒泡排序$a = [32,45,56,3,23,54,323];function maopao($a){ for($i=0;$i<count($a);$i++){ for($y=$i+1;$y<count($a);$y++){ if($a[$i] > $a[$y]){ $tmp = $a[$i]; $a[$i] = $a[$y]; $a[$y] = $tmp; } } } return $a;}echo "<pre>";var_dump(maopao($a));// 递归 - 冒泡排序// 思路 - 拿出第一个数跟其他数比较,大于小于次数分两边,自己在中间// (1) 递归就是在过程或函数里调用自身。 ...// (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 ...// (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。 ...// (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。 ...$arr2 = $a;function oo2($arr2){ $num = count($arr2); if($num <= 1){return $arr2;} //递归出口 $one = $arr2[0]; $arr_left = array(); $arr_right = array(); for ($i=1; $i < $num; $i++) { if($one > $arr2[$i]){ $arr_right[] = $arr2[$i]; }else{ $arr_left[] = $arr2[$i]; } } return array_merge(oo2($arr_right),array($one),oo2($arr_left));}print_r(oo2($arr2));结果Array( [0] => 3 [1] => 23 [2] => 32 [3] => 45 [4] => 54 [5] => 56 [6] => 323)Array( [0] => 3 [1] => 23 [2] => 32 [3] => 45 [4] => 54 [5] => 56 [6] => 323)